package com.young.core.dao;

import com.young.core.domain.NodeDO;
import com.young.core.domain.NodeRegistryDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * @description：节点 DAO
 * @author: yangyahui01
 * @date: 11/27/24 5:57 PM
 */
@Repository
public interface NodeDao {

    /**
     * 新增服务节点
     * @param node
     * @return
     */
    void insert(NodeDO node);

    /**
     * 更新服务节点信息
     * @return
     */
    int update(NodeDO node);

    /**
     *  获取指定节点
     * @return
     */
    NodeDO getSpecific(String instanceId);

    /**
     * 获取指定节点
     * @param project
     * @param ip
     * @param port
     * @return
     */
    NodeDO getSpecific(String project,String ip,int port);

    /**
     * 依据项目信息，查询服务节点
     * @param project
     * @return
     */
    Collection<NodeDO> getAll(String project);

    /**
     * 依据项目信息，查询服务节点
     * @param project
     * @return
     */
    List<NodeDO> getAlive(String project, int ttl);

    /**
     * 删除过期服务节点
     * @param ttl 秒
     * @return
     */
    int expire(long ttl);

    /**
     * 删除服务节点信息
     * @return
     */
    int delete(int id);

    int delete(String instanceId);

}
